package io.terminus.spzx.manager.service;

import com.github.pagehelper.PageInfo;
import io.terminus.spzx.model.dto.product.ProductDto;
import io.terminus.spzx.model.dto.product.SkuSaleDto;
import io.terminus.spzx.model.entity.product.Product;

import java.util.List;

/**
 * @Author lichunlong lcl253137@alibaba-inc.com
 * @Desc 商品管理Service接口
 * @Date 2024-10-11
 */
public interface ProductService {

    /**
     * 分页查询商品列表
     *
     * @param page       当前页
     * @param limit      每页记录数
     * @param productDto 查询条件
     * @return 分页查询结果
     */
    PageInfo<Product> findByPage(Integer page, Integer limit, ProductDto productDto);

    /**
     * 查询商品详情
     *
     * @param id 商品ID
     * @return 商品详情
     */
    Product getById(Long id);

    /**
     * 保存商品
     *
     * @param product 商品
     */
    void save(Product product);

    /**
     * 修改商品
     *
     * @param product 商品
     */
    void updateById(Product product);

    /**
     * 删除商品
     *
     * @param id 商品ID
     */
    void deleteById(Long id);

    /**
     * 审核商品
     *
     * @param id          商品ID
     * @param auditStatus 审核状态
     */
    void updateAuditStatus(Long id, Integer auditStatus);

    /**
     * 上下架商品
     *
     * @param id     商品ID
     * @param status 上下架状态
     */
    void updateStatus(Long id, Integer status);

    /**
     * 修改商品库存
     * @param skuSaleDtoList 商品库存信息
     * @return 修改结果
     */
    Boolean updateSkuSaleNum(List<SkuSaleDto> skuSaleDtoList);
}
